package com.edu.leetcode.dataStruct;

/**
 * 给你一个字符串 s，找到 s 中最长的回文子串。(时间复杂度没有达标)
 *
 * @作者 five-five
 * @创建时间 2021/4/14
 */
public class Demo19 {
    public static void main(String[] args) {
        Demo19 demo19 = new Demo19();
        String longestPalindrome = demo19.longestPalindrome("123321");
        System.out.println(longestPalindrome);
    }

    /**
     * 给你一个字符串 s，找到 s 中最长的回文子串。
     *
     * @param s 我们需要在这个参数中找出最长的回文字符串
     * @return 最长的回文字符串
     */
    public String longestPalindrome(String s) {
        int length = s.length();
        String result = "";
        for (int i = 0; i < length; i++) {
            for (int j = i + 1; j <= length; j++) {
                //每次都是截取(i,j)
                String substring = s.substring(i, j);
//                StringBuilder stringBuilder = new StringBuilder(substring);
//                String reversestring = stringBuilder.reverse().toString();
//                if (reversestring.equals(substring)) {
//                    result = result.length() < substring.length() ? substring : result;
//                }
                if (this.isPalindromeString(substring)) {
                    result = result.length() < substring.length() ? substring : result;
                }
            }
        }
        return result;
    }

    /**
     * 判断一个字符串是否是回文串
     *
     * @param string 目标字符串
     * @return true为回文串
     */
    public boolean isPalindromeString(String string) {
        int length = string.length();
        for (int i = 0; i < length / 2; i++) {
            if (string.charAt(i) != string.charAt(length - i - 1)) {
                return false;
            }
        }
        return true;
    }
}
